package com.huluobo.high3videoproject.demo;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;

/**
 * 事件分发机制: 一个事件分为3种(Down (按下)up(抬起) move(移动)) 一个完整的事件是有1个down 1个up 和0或者无数个move组成
 * 事件传递的过程: 从activity开始,传递到viewGroup,在到view,再返回给viewGroup,再返回给activity
 * 事件可以重写3种方法,分发(dispatch) 消费(onTouch) 拦截(intercept)
 * 通俗版本: 爷爷(activity) 拿到苹果(事件) 想一想是否(返回true false)发给(dispatch)爸爸,爸爸想一想要不要不给儿子直接还给爷爷(intercept),再想一想
 * 要不要发给儿子(dispatch),发给儿子,儿子想一想要不要直接还给爸爸,想一想要不要吃掉,不吃掉,还给爸爸,爸爸想想要不要吃掉,不吃掉,给爷爷,爷爷想
 * 一想要不要吃掉,不吃,丢掉 事件结束
 */

public class MyLinearLayout extends LinearLayout {
    public MyLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.i("TagA", "ViewGroup分发" + ev.getAction());
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.i("TagA", "ViewGroup消费" + event.getAction());
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.i("TagA", "ViewGroup拦截" + ev.getAction());
        return super.onInterceptTouchEvent(ev);
    }
}
